
#ifndef GamePadCapabilities_h
#define GamePadCapabilities_h

#include <CSharpPropertyMethods.h>

#include <Riccsson/Xna/Framework/Input/GamePadType.h>

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Input
			{
				// Summary:
				//     Describes the capabilities of an Xbox 360 Controller, including controller
				//     type, and identifies if the controller supports voice.
				struct GamePadCapabilities
				{

					// Summary:
					//     Gets the type of controller.
					public: PROP3_GET(GamePadType, gamePadType)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has an A button.
					public: PROP3_GET(bool, HasAButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a BACK button.
					public: PROP3_GET(bool, HasBackButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a B button.
					public: PROP3_GET(bool, HasBButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a BigButton button.
					public: PROP3_GET(bool, HasBigButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a directional pad DOWN button.
					public: PROP3_GET(bool, HasDPadDownButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a directional pad LEFT button.
					public: PROP3_GET(bool, HasDPadLeftButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a directional pad RIGHT button.
					public: PROP3_GET(bool, HasDPadRightButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a directional pad UP button.
					public: PROP3_GET(bool, HasDPadUpButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a left bumper button.
					public: PROP3_GET(bool, HasLeftShoulderButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a digital button control on the left
					//     analog stick.
					public: PROP3_GET(bool, HasLeftStickButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a left analog trigger.
					public: PROP3_GET(bool, HasLeftTrigger)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a low-frequency vibration motor.
					public: PROP3_GET(bool, HasLeftVibrationMotor)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller supports a left analog control with horizontal
					//     movement.
					public: PROP3_GET(bool, HasLeftXThumbStick)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller supports a left analog control with vertical
					//     movement.
					public: PROP3_GET(bool, HasLeftYThumbStick)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a right bumper button.
					public: PROP3_GET(bool, HasRightShoulderButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a digital button control on the right
					//     analog stick.
					public: PROP3_GET(bool, HasRightStickButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a right analog trigger.
					public: PROP3_GET(bool, HasRightTrigger)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a high-frequency vibration motor.
					public: PROP3_GET(bool, HasRightVibrationMotor)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller supports a right analog control with horizontal
					//     movement.
					public: PROP3_GET(bool, HasRightXThumbStick)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller supports a right analog control with vertical
					//     movement.
					public: PROP3_GET(bool, HasRightYThumbStick)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a START button.
					public: PROP3_GET(bool, HasStartButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller supports voice.
					public: PROP3_GET(bool, HasVoiceSupport)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has an X button.
					public: PROP3_GET(bool, HasXButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the controller has a Y button.
					public: PROP3_GET(bool, HasYButton)
					{
						throw;
					}
					//
					// Summary:
					//     Indicates whether the Xbox 360 Controller is connected.
					public: PROP3_GET(bool, IsConnected)
					{
						throw;
					}
				};
			}
		}
	}
}

#endif